home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / zpont311.lha / zpoint-3.11 / Rexx / ZPFSR.zprx < prev    next >
Text File  |  1995-03-09  |  10KB  |  353 lines

  1. /*  
  2.     $VER: ZPFSR.zprx V1.1 (02.03.1995) - Björn Koch
  3.  
  4.     ZPFSR = Zodiac`s Point File Server Requester
  5.  
  6. Dieses Skript wurde speziell für Zodiac`s Point erstellt, und dient
  7. zum mausgesteuerten Auswahl von Files, die über den ZP-File-Server
  8. bestellbar sind. Dazu muss eine beliebige FileListe vom Server (je
  9. neuer, je besser ;) ) ausgewählt werden, und das Skript gestartet
  10. werden. Findet das Skript in der Mail eine Zeile, die mit den drei
  11. Worten "Name Groesse Datum" und in dieser Reihenfolge beginnt, wird
  12. die Nachricht als eine FileListe anerkannt (mir ist noch kein anderes
  13. Erkennungsmerkmal aufgefallen), und die Auswahl kann beginnen.
  14.  
  15. Dieses Skript darf beliebig kopieren werden, solange es zusammen mit
  16. Zodiac's Point eingesetzt wird. Veränderungen ohne Erlaubnis des
  17. Autors (außer dem Konfigurationsteil) sind nicht erlaubt.
  18.  
  19.  
  20.     Hinweise zur Installation:
  21.  
  22. WICHTIG: Diese Skript benötigt UNBEDINGT folgende Libraries:
  23.  
  24.     - rexxtricks.library    (- by Jürgen Kohrmeyer)
  25.     - RexxReqTools.library  (- by Rafael D`Halleweyn)
  26.  
  27. Einfach dieses Skript in das Rexx-Verzeichnis von ZP kopieren, die
  28. Feinabstimmung vornehmen und auf Wunsch die Zeile
  29.     "F1:SYS:Rexxc/rx ZP:Rexx/ZPFSR.zprx %s"
  30. in die Datei 'fkeys.zp' einfügen.
  31.  
  32. Nähere Angaben zu der Datei 'fkeys.zp' sind in der Guide-Datei zu
  33. Zodiac`s Point zu finden.
  34.  
  35. Die Benutzung und Installation dieses Skriptes erfolgt auf eigene
  36. Gefahr, und der Autor übernimmt keine Haftung für eventuelle Schäden
  37. jeder Art, die durch die Benutzung oder Installation erstanden sind
  38. oder entstehen können.
  39.  
  40. Für Anregungen, Fehlermeldungen und Verbesserungsvorschläge ist der
  41. Autor sehr dankbar und wie folgt zu erreichen:
  42.  
  43.     Björn Koch          H.Humpel@NOSTLGIC.oche.de
  44.  
  45. */
  46.  
  47. /* Die Feinabstimmung: (Beginn Konfigurationsteil) */
  48.  
  49. FSAdresse   = "J.RITZERFELD@darkness.gun.de"    /* File-Server */
  50. FSListen    = "Files"       /* Ein typisches Betreff-Erkennungsmerkmal */
  51. FSBestell   = "SENDUU"      /* Aufforderung zum Senden (SEND oder SENDUU) */
  52.  
  53. ReqFont     = "SCREEN"      /* Der Font für den requester (SCREEN oder DEFAULT) */
  54.  
  55. ListeStart1 = "Name"        /* An diesen drei Eintraegen in einer */
  56. ListeStart2 = "Groesse"     /* Zeile erkennt das Skript die File-Liste */
  57. ListeStart3 = "Datum"       /* ... solange dies nicht geändert wird ;) */
  58.  
  59. TemporaerDatei  = "T:Tempdatei.zp"  /* Die übliche Schmierdatei */
  60.  
  61. ArchivIt    = 0                     /* Soll die Bestellung archiviert werden ? */
  62. CheckVer    = 0                     /* Sollen ein Vorhandensein ueberprueft werden? */
  63.                     /* ACHTUNG!!! Noch im BETA-Stadium!! */
  64.  
  65. ZPTools     = "ZP:Tools/"       /* Hier liegen die Tools (an den / oder den : denken!) */
  66. ZPRexx      = "ZP:Rexx/"        /* Hier liegt alles für ZPoint und Rexx */
  67.  
  68. /* AB HIER BITTE NICHTS MEHR ÄNDERN!!! (Ende Konfigurationsteil) */
  69.  
  70. OPTIONS RESULTS
  71.  
  72. PARSE ARG ZPPort
  73. IF ZPPort == "" THEN
  74.    ZPPort = 'ZPoint'
  75. ADDRESS VALUE ZPPort
  76.  
  77. IF (~SHOW('LIBRARIES', 'rexxtricks.library')) THEN
  78.    IF (~ADDLIB('rexxtricks.library', 0, -30, 0)) THEN DO
  79.       requestnotify 'Kann rexxtricks.library nicht öffnen!'
  80.       EXIT
  81.    END
  82.  
  83. IF (~SHOW('LIBRARIES', 'rexxreqtools.library')) THEN
  84.    IF (~ADDLIB('rexxreqtools.library', 0, -30, 0)) THEN DO
  85.       requestnotify 'Kann rexxreqtools.library nicht öffnen!'
  86.       EXIT
  87.    END
  88.  
  89. NL = '0A'x
  90. Bestellt = 0
  91. ListeStart1 = UPPER(ListeStart1)
  92. ListeStart2 = UPPER(ListeStart2)
  93. ListeStart3 = UPPER(ListeStart3)
  94. ScreenTag = 'rt_pubscrname='||ZPPort
  95.  
  96. ReqFont = UPPER(ReqFont)
  97. IF ((ReqFont ~= 'SCREEN') & (ReqFont ~= 'DEFAULT')) THEN
  98.     ReqFont = 'DEFAULT'
  99.  
  100. WHICHLEVEL
  101. Level=RESULT
  102. IF Level ~= "BOARD" THEN DO
  103.     REQUESTNOTIFY " Dieses Skript arbeitet nur, wenn Du in einem Brett bist!!"
  104.     EXIT
  105.   END
  106.  
  107. MESSAGEINFO AUTHOR
  108. Autor = RESULT
  109. MESSAGEINFO FULLSUBJECT
  110. Betreff = RESULT
  111. ret = 0
  112.  
  113. IF ~(MATCHPATTERN(Autor,FSAdresse||'#?') & MATCHPATTERN(Betreff,'#?'||FSListen||'#?')) THEN DO
  114.     Inhalt = ' Diese Mail scheint NICHT vom File-Server zu sein !!'
  115.     Titel = 'Was nun ??'
  116.     ret = rtezrequest(Inhalt,'Dann nicht!|Egal!! Weiter!',Titel,ScreenTag)
  117. END
  118. IF (ret = 0) THEN DO
  119.     SAVEMESSAGEBODY TemporaerDatei
  120.     CALL BildeListe
  121.     IF (Gehtlos = 0) THEN
  122.     REQUESTNOTIFY " Diese Mail scheint keine FileListe zu sein !! "
  123.     ELSE DO
  124.     IF (j >= 1) THEN DO
  125.         Inhalt = ' Es wurden '||j||' neue Dateien gefunden.'||NL
  126.         Inhalt = Inhalt||'           Direkt durchschauen ?'
  127.         ret = rtezrequest(Inhalt,'Klar!!|Noe...',' Es gibt was neues :)',ScreenTag)
  128.         IF (ret = 1) THEN
  129.         CALL NeueErst
  130.         Inhalt = ' Soll auch was von den älteren Files bestellt werden ??'
  131.         ok = rtezrequest(Inhalt,'Klaaaar!|Muss nicht sein!','Alt, aber nützlich...',ScreenTag)
  132.     END
  133.     DO WHILE (ok ~= 0)
  134.         CALL Auswahl
  135.     END
  136.     CALL MakeBestellDatei
  137.     END
  138.  
  139.     ADDRESS COMMAND
  140.     IF Exists(TemporaerDatei) THEN
  141.     'delete >NIL:' TemporaerDatei
  142. END
  143.  
  144. EXIT
  145.  
  146.  
  147. /* Die Unterroutinen... */
  148.  
  149.  
  150. BildeListe:                             /* Liste auswerten */
  151.     CALL Open('ListDatei',TemporaerDatei,'R')
  152.     Zeile = ReadLn('ListDatei')
  153.     Gehtlos = 0
  154.     DO WHILE(~EOF('ListDatei') & (Gehtlos=0))
  155.     Zeile = UPPER(Zeile)
  156.     IF (Word(Zeile,1) = ListeStart1) THEN
  157.         IF (Word(Zeile,2) = ListeStart2) THEN
  158.         IF (Word(Zeile,3) = ListeStart3) THEN
  159.             Gehtlos = 1
  160.     Zeile = ReadLn('ListDatei')
  161.     END
  162.     DO WHILE(~EOF('ListDatei') & (Zeile = ""))
  163.     Zeile = ReadLn('ListDatei')
  164.     END
  165.     IF (Gehtlos = 1) THEN DO
  166.     Listeende = 0
  167.     i = 0
  168.     j = 0
  169.     DO WHILE (Listeende = 0)
  170.         k = 1
  171.         IF Word(Zeile,k)='*' THEN DO
  172.         Neu.j = i
  173.         j = j+1
  174.         k = k+1
  175.         END
  176.         Name.i = Word(Zeile,k)
  177.         Groesse.i = Word(Zeile,k+1)
  178.         Datum.i = Word(Zeile,k+2)
  179.         Zeile = ReadLn('ListDatei')
  180.         IF (Right(Word(Zeile,1),1)=';') THEN
  181.         CALL MakeVer
  182.         ELSE DO
  183.         Text.i = Strip(Zeile,'L',' ')
  184.         Ver.i = '???'
  185.         END
  186.         Zeile = ReadLn('ListDatei')
  187.         IF Zeile ~= "" THEN
  188.         CALL MehrZeilen
  189.         ELSE DO
  190.         Zeile = ReadLn('ListDatei')
  191.         IF Zeile ="" THEN
  192.             Listeende = 1
  193.         ELSE DO
  194.           i = i+1
  195.         END
  196.         END
  197.     END
  198.     END
  199.     CALL Close('ListDatei')
  200.     RETURN
  201.  
  202.  
  203. MakeVer:                                /* Versions-String ausshneiden */
  204.     Ver.i = Word(Zeile,1)
  205.     Ver.i = Strip(Ver.i,'T',';')
  206.     Zeile = DelWord(Zeile,1,1)
  207.     Text.i = Strip(Zeile,'L',' ')
  208.     RETURN
  209.  
  210.  
  211. MehrZeilen:                             /* Die Beschreibung geht über mehrere zeilen */
  212.     Text.i = Text.i||' '||Zeile
  213.     Zeile = ReadLn('ListDatei')
  214.     IF Zeile ~= "" THEN
  215.     CALL MehrZeilen
  216.     RETURN
  217.  
  218.  
  219. NeueErst:                               /* Zuerst die neuen Dateien abfragen */
  220.     l = 0
  221.     DO WHILE (l<j)
  222.     k = Neu.l
  223.     CALL InfoReq
  224.     l = l+1
  225.     END
  226.     RETURN
  227.  
  228.  
  229. Auswahl:                                /* Der Auswahlrequester */
  230.     Name.count = i
  231.     fenster.title = 'Die Qual der Wahl......'
  232.     fenster.postext = 'Zur Auswahl'
  233.     fenster.negtext = 'Genug jetzt!'
  234.     fenster.pubscreen = ZPPort
  235.     fenster.font = ReqFont
  236.     fenster.sort = 'TRUE'
  237.     ok = VIEWLIST(Name,'fenster',NName)
  238.     IF (ok ~= 0) THEN DO
  239.     x = 0
  240.     k = 0
  241.     DO WHILE(x < NName.count)
  242.         DO WHILE(NName.x ~= Name.k)
  243.         k = k+1
  244.         END
  245.         CALL InfoReq
  246.         x = x+1
  247.         k = 0
  248.     END
  249.     END
  250.     RETURN
  251.  
  252.  
  253. InfoReq:                                /* Dateivorstellung */
  254.     NamText  = ' Name   :  '||Strip(Name.k,'L','+')||NL
  255.     GroeText = ' Größe  :  '||Groesse.k||' Bytes'||NL
  256.     DatText  = ' Datum  :  '||Datum.k||NL
  257.     VerText  = ' Version:  '||Ver.k||NL
  258.     TexText  = NL||Text.k||NL
  259.  
  260.     DatNam = Strip(Name.k,'L','+')
  261.     SuchVerz = ZPRexx
  262.     Datei = SuchVerz||DatNam
  263.     IF ~EXISTS(Datei) THEN DO
  264.     SuchVerz = ZPTools
  265.     Datei = SuchVerz||DatNam
  266.     IF ~EXISTS(Datei) THEN
  267.         BemText = NL||NL||' Diese Datei scheint noch nicht vorhanden zu sein !!'||NL
  268.     END
  269.     ELSE DO
  270.     BemText = NL||NL||' Diese Datei wurde im '||SuchVerz||' -Verzeichnis gefunden !!'
  271.     IF (CheckVer = 1) THEN DO
  272.         ADDRESS COMMAND
  273.         'version >T:Ver.temp ' Datei' FILE FULL'
  274.         IF (RC=0) THEN DO
  275.         CALL Open('VerDatei','T:Ver.temp','R')
  276.         DatVer = ''
  277.         DO WHILE ~EOF('VerDatei')
  278.             DatVer = DatVer||ReadLn('VerDatei')||NL
  279.         END
  280.         BemText = BemText||NL||' Versions-String des Files:'||NL||NL||DatVer
  281.         CALL Close('VerDatei')
  282.         END
  283.         ELSE
  284.         BemText = BemText||NL||' Keine Versionsangabe zu <'||Datei||'> zu finden!!'
  285.         'delete >NIL: T:Ver.temp'
  286.         ADDRESS ZPPort
  287.     END
  288.     END
  289.  
  290.     Inhalt = NamText||GroeText||DatText||VerText||TexText||BemText
  291.     IF(Left(Name.k,1)='+') THEN
  292.     CALL InfoPos
  293.     ELSE
  294.     CALL InfoNeg
  295.     RETURN
  296.  
  297.  
  298. InfoPos:                                /* Datei bereits bestellt */
  299.     Frage = NL||NL||'Diese Datei ist bereits zum Bestellen markiert !!'||NL
  300.     Frage = Frage||'     Soll sie doch nicht bestellt werden ???'
  301.     Inhalt = Inhalt||Frage
  302.     Wahl = 'Upps!!|Neee.. will ich doch nicht'
  303.     Titel = 'Das kommt mir bekannt vor...'
  304.     ret = rtezrequest(Inhalt,Wahl,Titel,ScreenTag)
  305.     IF (ret = 0) THEN DO
  306.     Name.k = Strip(Name.k,'L','+')
  307.     l = 1
  308.     DO WHILE((l <= Bestellt) & (Name.k ~= Best.l))
  309.         l = l+1
  310.     END
  311.     DO WHILE(l < Bestellt)
  312.         ll = l+1
  313.         Best.l = Best.ll
  314.         l = l+1
  315.     END
  316.     Bestellt = Bestellt-1
  317.     END
  318.     RETURN
  319.  
  320.  
  321. InfoNeg:                                /* Datei noch nicht bestellt */
  322.     Frage = NL||NL||'Soll ich diese Datei bestellen ???'
  323.     Inhalt = Inhalt||Frage
  324.     Wahl = 'Aber immer doch!|Hmmm.. weniger'
  325.     Titel = 'Die ZP-Toolsverwaltung empfiehl:'
  326.     ret = rtezrequest(Inhalt,Wahl,Titel,ScreenTag)
  327.     IF (ret = 1) THEN DO
  328.     Bestellt = Bestellt+1
  329.     Best.Bestellt = Name.k
  330.     Name.k = Insert('+',Name.k)
  331.     END
  332.     RETURN
  333.  
  334.  
  335. MakeBestellDatei:                       /* Erstelle die Bestellliste */
  336.     IF (Bestellt = 0) THEN
  337.     RETURN
  338.     CALL Open('DummyDatei',TemporaerDatei,'W')
  339.     l=1
  340.     DO WHILE (l <= Bestellt)
  341.     Erfolg = WriteLn('DummyDatei',Best.l)
  342.     l = l+1
  343.     END
  344.     CALL Close('DummyDatei')
  345.     IF (ArchivIt = 1) THEN
  346.     FSBestell = FSBestell||" ARCHIVE"
  347.     WRITEMESSAGE TemporaerDatei RECEIVER FSAdresse SUBJECT FSBestell
  348. RETURN
  349.   
  350.  
  351. /* ... und ENDE! */
  352.  
  353.